// 创建axios实例并配置拦截器
window.apiClient = axios.create({
    baseURL: '/',
    timeout: 150000, // 增加到150秒（2.5分钟），适配AI助手的复杂问题处理
    headers: {
        'Content-Type': 'application/json'
    }
});

// 请求拦截器
window.apiClient.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        console.log('请求拦截器 - 发送请求前', config);
        
        // 可以在这里添加token等认证信息
        const token = localStorage.getItem('authToken');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        
        return config;
    },
    error => {
        // 对请求错误做些什么
        console.error('请求拦截器 - 请求错误', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
window.apiClient.interceptors.response.use(
    response => {
        // 统一格式：{code, msg, data}
        if (response.data && typeof response.data === 'object' && 'code' in response.data) {
            if (response.data.code === 200) {
                return response.data;
            } else {
                // 业务错误，抛出带msg的Error
                return Promise.reject(new Error(response.data.msg || '请求失败'));
            }
        }
        // 非统一格式，直接返回
        return response.data;
    },
    error => {
        let errorMessage = '请求失败，请稍后重试';
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    errorMessage = '未授权，请重新登录';
                    localStorage.removeItem('authToken');
                    window.location.href = '/auth/login';
                    break;
                case 403:
                    errorMessage = '拒绝访问';
                    break;
                case 404:
                    errorMessage = '请求的资源不存在';
                    break;
                case 500:
                    errorMessage = '服务器错误';
                    break;
                default:
                    errorMessage = error.response.data.msg || error.response.data.message || errorMessage;
            }
        } else if (error.request) {
            errorMessage = '网络错误，请检查网络连接';
        }
        return Promise.reject(new Error(errorMessage));
    }
);
